﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class МеханизмНумерацииОбъектов
	{
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ МЕХАНИЗМА АВТОНУМЕРАЦИИ
		// Процедура изменения доступности "ручного" изменения кода/номера объекта
		//
		// Параметры
		//  МетаданныеОбъекта  - метаданные объекта.
		//  ФормаОбъекта      - форма объекта.
		//  ПодменюДействия - меню "Действия" командной панели формы. В этот меню должен присутствовать пункт "Редактировать код/номер"
		//  ПолеВводаНомера - поле вводе, связанное с кодом/номером объекта
		//	ПолеВводаНомераДубль - необязательный параметр, необходим в случаях, когда код/номер одновременно связан с двумя элементами формы
		//	КодНомерСтрокой - необязательный параметр, позволяет задать переназначить имя кода/номера при выводе запроса на подтверждение
		//

		public void ИзменениеВозможностиРедактированияНомера(/*МетаданныеОбъекта, ФормаОбъекта, ПодменюДействия, ПолеВводаНомера, ПолеВводаНомераДубль = Неопределено, ТекстВопроса = ""*/)
		{
			//Кнопка = ПодменюДействия.Кнопки.РедактироватьКодНомер;
			if(true/*НЕ Кнопка.Пометка*/)
			{
				if(true/*ПустаяСтрока(ТекстВопроса)*/)
				{
					if(true/*ВРЕГ(ПолеВводаНомера.Данные) = ВРЕГ("Код")*/)
					{
						//ТекстВопроса = "Код присваивается автоматически при записи элемента, самостоятельное его редактирование может привести к нарушению в нумерации в системе. Вы действительно хотите установить код вручную?";
					}
				}
				//Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
				if(true/*Ответ <> КодВозвратаДиалога.Да*/)
				{
				}
			}
			//Кнопка.Пометка = Не Кнопка.Пометка;
			//ПолеВводаНомера.ТолькоПросмотр = НЕ Кнопка.Пометка;
			//ПолеВводаНомера.ПропускатьПриВводе = ПолеВводаНомера.ТолькоПросмотр;
			//ОбновитьПодсказкуКодНомерОбъекта(МетаданныеОбъекта, ПодменюДействия, ПолеВводаНомера);
			if(true/*ПолеВводаНомераДубль <> Неопределено*/)
			{
				//ПолеВводаНомераДубль.ТолькоПросмотр = ПолеВводаНомера.ТолькоПросмотр;
				//ПолеВводаНомераДубль.ПропускатьПриВводе = ПолеВводаНомераДубль.ТолькоПросмотр;
				//ОбновитьПодсказкуКодНомерОбъекта(МетаданныеОбъекта, ПодменюДействия, ПолеВводаНомераДубль);
			}
		}
		// ИзменениеВозможностиРедактированияНомера()
		//	Процедура установки флага ТолькоПросмотр для поля ввода кода/номера в зависимости от стратегии автонумерации объекта
		//
		// Параметры
		//  МетаданныеОбъекта  - метаданные объекта
		//  ФормаОбъекта - форма объекта, табличное поле
		//  ПодменюДействия - меню "Действия" командной панели формы. В этот меню должен присутствовать пункт "Редактировать код/номер"
		//  ПолеВводаНомера - поле вводе, связанное с кодом/номером объекта
		//

		public void УстановитьДоступностьПоляВводаНомера(/*МетаданныеОбъекта, ФормаОбъекта, ПодменюДействия, ПолеВводаНомера*/)
		{
			if(true/*ФормаОбъекта.Автонумерация = АвтонумерацияВФорме.Авто*/)
			{
			}
			//СтратегияРедактирования = ПолучитьСтратегиюРедактированияНомераОбъекта(МетаданныеОбъекта);
			if(true/*СтратегияРедактирования = Перечисления.СтратегияРедактированияНомеровОбъектов.Доступно*/)
			{
				if(true/*ПодменюДействия.Кнопки.Найти("РедактироватьКодНомер") <> Неопределено*/)
				{
					//ПодменюДействия.Кнопки.Удалить(ПодменюДействия.Кнопки.РедактироватьКодНомер);
				}
				//ПолеВводаНомера.ТолькоПросмотр = Ложь;
			}
			//ПолеВводаНомера.ПропускатьПриВводе = ПолеВводаНомера.ТолькоПросмотр;
			//УстановитьПодсказкуПоляВводаКодаНомера(ПолеВводаНомера, ПодменюДействия, СтратегияРедактирования);
		}
		// УстановитьДоступностьПоляВводаНомера()
		//	Возвращает стратегию нумерации для объекта
		//
		// Параметры
		//	МетаданныеОбъекта - метаданные объекта
		//
		// Возвращаемое значение
		//  Стратегия нумерации для объекта
		//

		public object ПолучитьСтратегиюРедактированияНомераОбъекта(/*МетаданныеОбъекта*/)
		{
			//КэшСтратегииАвтонумерации = глЗначениеПеременной("КэшСтратегииАвтонумерации");
			//СтратегияРедактирования = КэшСтратегииАвтонумерации[МетаданныеОбъекта];
			if(true/*СтратегияРедактирования = Неопределено*/)
			{
				//СтратегияРедактирования = ПолучитьСтратегиюАвтонумерацииДляОбъекта(МетаданныеОбъекта);
				//КэшСтратегииАвтонумерации.Вставить(МетаданныеОбъекта, СтратегияРедактирования);
			}
			return null;
		}
		// ПолучитьСтратегиюРедактированияНомераОбъекта()
		//	Процедура установки текста подсказки для поля ввода кода/номера в зависимости от стратегии редактирования
		//	и введенного значения
		//
		// Параметры
		//  ПолеВводаНомера - поле вводе, связанное с кодом/номером объекта
		//  ПодменюДействия - меню "Действия" командной панели формы. В этот меню должен присутствовать пункт "Редактировать код/номер"
		//	СтратегияРедактирования - стратегия автонумерации объекта
		//

		public void УстановитьПодсказкуПоляВводаКодаНомера(/*ПолеВводаНомера, ПодменюДействия, СтратегияРедактирования*/)
		{
			//КодНомерСтрокой = ПолеВводаНомера.Данные;
			if(true/*ТипЗнч(ПолеВводаНомера) = Тип("ПолеВвода")*/)
			{
				//ПолеВвода = ПолеВводаНомера;
			}
			if(true/*ПустаяСтрока(ПолеВвода.Значение)*/)
			{
				//ПолеВвода.Подсказка =  КодНомерСтрокой + " будет присвоен при записи объекта.";
			}
			if(true/*СтратегияРедактирования = Перечисления.СтратегияРедактированияНомеровОбъектов.НеДоступно*/)
			{
				if(true/*НЕ ПодменюДействия.Кнопки.Найти("РедактироватьКодНомер") = Неопределено*/)
				{
					if(true/*НЕ ПодменюДействия.Кнопки.РедактироватьКодНомер.Пометка*/)
					{
						/*ПолеВвода.Подсказка =  ПолеВвода.Подсказка + ?(ПустаяСтрока(ПолеВвода.Подсказка), "", " ") 
											 + "Для возможности редактирования " + ?(КодНомерСтрокой = "Номер", "номера", "кода") + " используйте подменю ""Действия"".";*/
					}
				}
			}
		}
		// УстановитьПодсказкуПоляВводаКодаНомера()
		//	Возвращает стратегию нумерации для объекта, сохраненную в соотв. регистре сведений
		//
		// Параметры
		//	МетаданныеОбъекта - метаданные объекта
		//
		// Возвращаемое значение
		//  Стратегия нумерации для объекта
		//

		public object ПолучитьСтратегиюАвтонумерацииДляОбъекта(/*МетаданныеОбъекта*/)
		{
			if(true/*Метаданные.Справочники.Содержит(МетаданныеОбъекта)*/)
			{
				//ТипОбъекта = "Справочники";
			}
			//Запрос = Новый Запрос;
			/*Запрос.Текст = "
	|ВЫБРАТЬ
	|	СтратегияРедактированияНомераОбъекта КАК СтратегияРедактированияНомераОбъекта
	|ИЗ 
	|	РегистрСведений.СтратегииРедактированияНомеровОбъектов
	|ГДЕ
	|	ТипОбъекта = &ТипОбъекта
	|	И ВидОбъекта = &ВидОбъекта";*/
			//Запрос.УстановитьПараметр("ТипОбъекта", ТипОбъекта);
			//Запрос.УстановитьПараметр("ВидОбъекта", МетаданныеОбъекта.Имя);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Следующий()*/)
			{
			}
			return null;
		}
		// ПолучитьСтратегиюАвтонумерацииДляОбъекта()
		//	Процедура обновления текста подсказки для поля ввода кода/номера
		//
		// Параметры
		//	МетаданныеОбъекта - метаданные объекта
		//  ПолеВводаНомера - поле вводе, связанное с кодом/номером объекта
		//  ПодменюДействия - меню "Действия" командной панели формы. В этот меню должен присутствовать пункт "Редактировать код/номер"
		//

		public void ОбновитьПодсказкуКодНомерОбъекта(/*МетаданныеОбъекта, ПодменюДействия, ПолеВводаНомера*/)
		{
			//УстановитьПодсказкуПоляВводаКодаНомера(ПолеВводаНомера, ПодменюДействия, ПолучитьСтратегиюРедактированияНомераОбъекта(МетаданныеОбъекта));
		}
		// ОбновитьПодсказкуКодНомерОбъекта()
		//	Процедура очистки введенного кода/номера объекта
		// Параметры
		//  ЭтотОбъект  - объект.
		//	КодНомер - имя обрабатываемого реквизита (Код или Номер)
		//  ПодменюДействия - меню "Действия" командной панели формы. В этот меню должен присутствовать пункт "Редактировать код/номер"
		//  ПолеВводаНомера - поле вводе, связанное с кодом/номером объекта
		//

		public void СброситьУстановленныйКодНомерОбъекта(/*ЭтотОбъект, КодНомер, ПодменюДействия, ПолеВводаНомера*/)
		{
			//ОбъектМетаданные = ЭтотОбъект.Метаданные();
			if(true/*ОбъектМетаданные.Реквизиты.Найти("Организация") = Неопределено*/)
			{
				//ЭтотОбъект[КодНомер] = "";
			}
			if(true/*ЭтотОбъект[КодНомер] = ""*/)
			{
				//ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ПодменюДействия, ПолеВводаНомера);
			}
		}
		// СброситьУстановленныйКодНомерОбъекта()

		public void ДобавитьВМенюДействияКнопкуРедактированияНомера(/*ПодменюДействия*/)
		{
			//ДобавитьВМенюДействияКнопкуПоТипуОбъекта(ПодменюДействия, "номер");
		}

		public void ДобавитьВМенюДействияКнопкуРедактированияКода(/*ПодменюДействия*/)
		{
			//ДобавитьВМенюДействияКнопкуПоТипуОбъекта(ПодменюДействия, "код");
		}

		public void ДобавитьВМенюДействияКнопкуПоТипуОбъекта(/*ПодменюДействия, КодНомер*/)
		{
			if(true/*ПодменюДействия.Кнопки.Найти("РедактироватьКодНомер") = Неопределено*/)
			{
				//Обработчик = Новый Действие("ДействияФормыРедактировать" + КодНомер);
				//ПодменюДействия.Кнопки.Добавить("РазделительРедактированияКодаНомера", ТипКнопкиКоманднойПанели.Разделитель);
				//Кнопка = ПодменюДействия.Кнопки.Добавить("РедактироватьКодНомер", ТипКнопкиКоманднойПанели.Действие, "Редактировать " + КодНомер, Обработчик);
			}
		}
	}
}
